In a remote presentation session, a client computer sends user input (such as keyboard presses and mouse movements) to a server computer, which processes the result of that input (such as executing an application), and sends back the output (e.g. graphics and audio) to the client computer for presentation. In this manner, applications may appear to execute locally on the client computer, when they are, in fact, processed on the server computer.
The graphical output produced by a server in a remote presentation session is often significant, especially compared with the bandwidth of a network connection between the server and the client. In some scenarios, bandwidth may be conserved by compressing the graphical output with lossy compression before transmitting it across the network connection, then decompressing it at the client. In lossy compression, some of the information is lost in the process of compression—the decompressed data may resemble the original data, but it is not an exact duplicate. Lossy compression is not always a viable possibility, such as in a situation where high resolution graphics must be duplicated exactly on the client computer. For instance, where a remote presentation session is used to transmit x-ray images of medical patients, any compression artifacts from lossy compression that appear in those x-ray images may compromise a physician's ability to properly evaluate the x-rays.
Thus, there are times where lossless compression is used in a remote presentation session. With lossless compression, the decompressed data is an exact duplicate of the original data. There are various techniques for lossless compression of data in a remote presentation session, including a class of techniques known as entropy encoding. In entropy encoding, data is encoded as if it were sequence of independent and identically-distributed random variables. There are, however, many drawbacks with entropy encoding for remote presentation systems, some of which are well known.